The Compressor Capability Structure
These new compressor capability flags have been added to the compressor capability structure. Your component sets these flags in the
flags
field of the
CodecCapabilities
structure:
enum {
codecCanAsyncWhen = 1L << 16,
codecCanShieldCursor = 1L << 17,
codecCanManagePrevBuffer = 1L << 18,
codecHasVolatileBuffer = 1L << 19,
codecImageBufferIsOnScreen = 1L << 21,
codecWantsDestinationPixels = 1L << 22,
codecWantsSpecialScaling = 1L << 23
};
Flag descriptions
-
codecCanAsyncWhen
-
Indicates whether your decompressor component supports scheduled asynchronous decompression. Set this flag to 1 if your component can support the scheduling functionality of the
ImageCodecBandDecompress
function. Note that you must also set the
codecCanAsync
flag to 1.
-
codecCanShieldCursor
-
Indicates whether your decompressor component will manage the shielding of the cursor during decompression. If your component can manage the cursor's display, set this flag to 1. Your component can use the Image Compression Manager's
ICMShieldSequenceCursor
function to shield the cursor. The cursor is automatically unsheilded when you call
ICMDecompressComplete
.
-
Otherwise, set this flag to 0--the Image Compression Manager then manages the cursor for you.
-
It is highly recommended that you support this capability if your decompressor supports asynchronous operation or the cursor may remain shielded for unacceptably long periods of time.
-
codecCanManagePrevBuffer
-
Indicates that your compressor component is capable of allocating and managing the
prevPixMap
used in temporal compression. If this flag is set, then your compressor must determine when to update the
prevPixMap
during compression sequences. Codecs setting this flag should also set
codecCanCopyPrev
.
-
codecHasVolatileBuffer
-
Some hardware decompressors don't actually draw the decompressed pixels into the frame buffer as requested by QuickTime. Instead, they have a second frame buffer that floats or overlays above the main frame buffer. The image is decompressed into this secondary frame buffer instead. To the user, the effect is the same because the video hardware merges the two frame buffers together. When the window that contains the image is moved to another location in the same screen buffer, the Window Manager uses
CopyBits
to transfer the window's pixels from the old location to the new location. Unfortunately, because the Window Manager is unaware of the presence of the secondary frame buffer, it cannot move the image it is displaying.
-
By setting the
codecHasVolatileBuffer
flag to 1, the decompressor component informs QuickTime that it uses a secondary frame buffer. When the Window Manager moves a window, QuickTime forces a redraw of the contents of the window so that the secondary frame buffer can be repositioned and/or updated as necessary.
-
codecImageBufferIsOnScreen
-
By setting the
codecImageBufferIsOnScreen
flag to 1, the decompressor component informs QuickTime that it is a direct screen transfer codec. Codecs that use the
ImageCodecNewImageBufferMemory
call to create an offscreen buffer that is really onscreen would set this flag. See
"Accelerated Video Support"
for more information on this flag.
-
codecWantsSpecialScaling
-
Specifies to use an image buffer whose size is determined by the
requestedBufferWidth
and
requestedBufferHeight
fields in the decompression parameters structure (
CodecDecompressParams
) or compression parameters structure (
CodecCompressParams
).
© 1999 Apple Computer, Inc.| Previous | Chapter Contents | Chapter Top | Next |